Telegram Group & Telegram Channel
إزاي تتعامل مع الـ State في مشاريع الفرونت إند؟ 💡
.
.
خليني أحكيلك سيناريو بسيط:

أنت شغال على UI لتطبيق إعلانات. في الصفحة الرئيسية فيه زرار بيعرض modal، وفي نفس الوقت فيه قائمة إعلانات بترجع من API، ولما تضغط على إعلان بتروح على صفحة التفاصيل.

دلوقتي الـ modal ده لو تحكمت فيه بـ useState مثلًا في نفس الـ component؟ تمام.
بس الإعلانات؟ محتاج تجيبها من API وتخزنها؟ هتضيفها فين؟
ولو صفحة التفاصيل محتاجة تشوف نفس الداتا؟ هتعمل إيه؟
ولو عندك مستخدم مسجل دخول، ومحتاج كل الصفحات تعرف حالته؟

هنا تبدأ قصة الـ State Management، وتحديدًا:

- هل الداتا دي تبقى locally؟
- ولا تكون في global state؟
ولا تفضل على الـ server وتجيبها كل مرة؟

تعال ندردش شوية عن إزاي تتعامل مع الـ State في مشاريع الفرونت إند...

———

أنواع الـ State اللي ممكن تتعامل معاها:

1- Local State

مثل:

- الـ modal مفتوح ولا مقفول
- الـ tab اللي مفتوح
- الفورم فيه error ولا لا

بتستخدم معاه حاجات زي useState, useReducer, أو حتى useRef.

———

2- Global State

ده اللي بيكون مهم لأكثر من component أو حتى أكتر من صفحة.

مثل:

- بيانات المستخدم بعد ما يعمل تسجيل دخول
- اللغة المختارة
- محتوى الـ shopping cart

ممكن تتعامل معاه باستخدام:
Context API | Redux | Zustand | Jotai

———

3- Server State

يعني داتا راجعة من API وبتتغير دايمًا.

مثل:

- قائمة البوستات اللي بترجع
- الإعلانات
- بيانات المنتج

التعامل معاها الأفضل يتم من خلال:

- React Query
- SWR
- custom hooks using fetch

———

4- URL State

ده زي الـ query params والـ path variables.

مثل:

- ?search=react
- /products/123


بتحتاجه لما الصفحة تكون reactive بناءً على URL.

———

💡 إزاي تقرر تستخدم أي نوع منهم؟

اسأل نفسك 3 أسئلة:

1. الداتا دي مين محتاج يشوفها؟

- لو component واحدة تبقى local
- لو أكثر من component أو أكثر من صفحة تبقى global


2. هل الداتا دي راجعة من السيرفر؟

- لو أيوه تبقى server state
- لو لا يبقى ترجع لإجابة السؤال الأول


3. هل محتاج تعمل caching أو refetching؟

- لو أيوه ممكن تستخدم React Query/SWR
- لو لا يبقى الـ useEffect كفاية

———

شوية نصائح من التجربة:

- بلاش تستعجل وتستخدم Redux، كتير بيستخدموه في حاجات صغيرة جدًا ممكن تتحل بـ Context أو حتى props.

- خلي الداتا اللي بتتغير كتير تفضل على السيرفر، وخلي الـ React Query تمسكها بدل ما تعملها global state manually.

- متخليش كل حاجة global، ده بيخلي الـ re-rendering يزيد والـ debugging بيكون أصعب.

- الـ Server State مش دايمًا محتاج يتحول لـ Global State، الـ React Query مثلًا بيخزنها وبيشاركها بين الـ components تلقائي، من غير ما تدخلها في Redux أو غيره.

- الـ Context ممتاز للحاجات اللي مش بتتغير كتير، زي الـ theme أو اللغة أو المستخدم اللي دخل مرة واحدة وخلاص.

———

اختيارك للـ state له تأثير مباشر على الـ performance، وكمان الـ maintainability، والـ DX بتاعك.

———

وفقكم الله لكل خير 🌿



tg-me.com/the_developer_guide/5316
Create:
Last Update:

إزاي تتعامل مع الـ State في مشاريع الفرونت إند؟ 💡
.
.
خليني أحكيلك سيناريو بسيط:

أنت شغال على UI لتطبيق إعلانات. في الصفحة الرئيسية فيه زرار بيعرض modal، وفي نفس الوقت فيه قائمة إعلانات بترجع من API، ولما تضغط على إعلان بتروح على صفحة التفاصيل.

دلوقتي الـ modal ده لو تحكمت فيه بـ useState مثلًا في نفس الـ component؟ تمام.
بس الإعلانات؟ محتاج تجيبها من API وتخزنها؟ هتضيفها فين؟
ولو صفحة التفاصيل محتاجة تشوف نفس الداتا؟ هتعمل إيه؟
ولو عندك مستخدم مسجل دخول، ومحتاج كل الصفحات تعرف حالته؟

هنا تبدأ قصة الـ State Management، وتحديدًا:

- هل الداتا دي تبقى locally؟
- ولا تكون في global state؟
ولا تفضل على الـ server وتجيبها كل مرة؟

تعال ندردش شوية عن إزاي تتعامل مع الـ State في مشاريع الفرونت إند...

———

أنواع الـ State اللي ممكن تتعامل معاها:

1- Local State

مثل:

- الـ modal مفتوح ولا مقفول
- الـ tab اللي مفتوح
- الفورم فيه error ولا لا

بتستخدم معاه حاجات زي useState, useReducer, أو حتى useRef.

———

2- Global State

ده اللي بيكون مهم لأكثر من component أو حتى أكتر من صفحة.

مثل:

- بيانات المستخدم بعد ما يعمل تسجيل دخول
- اللغة المختارة
- محتوى الـ shopping cart

ممكن تتعامل معاه باستخدام:
Context API | Redux | Zustand | Jotai

———

3- Server State

يعني داتا راجعة من API وبتتغير دايمًا.

مثل:

- قائمة البوستات اللي بترجع
- الإعلانات
- بيانات المنتج

التعامل معاها الأفضل يتم من خلال:

- React Query
- SWR
- custom hooks using fetch

———

4- URL State

ده زي الـ query params والـ path variables.

مثل:

- ?search=react
- /products/123


بتحتاجه لما الصفحة تكون reactive بناءً على URL.

———

💡 إزاي تقرر تستخدم أي نوع منهم؟

اسأل نفسك 3 أسئلة:

1. الداتا دي مين محتاج يشوفها؟

- لو component واحدة تبقى local
- لو أكثر من component أو أكثر من صفحة تبقى global


2. هل الداتا دي راجعة من السيرفر؟

- لو أيوه تبقى server state
- لو لا يبقى ترجع لإجابة السؤال الأول


3. هل محتاج تعمل caching أو refetching؟

- لو أيوه ممكن تستخدم React Query/SWR
- لو لا يبقى الـ useEffect كفاية

———

شوية نصائح من التجربة:

- بلاش تستعجل وتستخدم Redux، كتير بيستخدموه في حاجات صغيرة جدًا ممكن تتحل بـ Context أو حتى props.

- خلي الداتا اللي بتتغير كتير تفضل على السيرفر، وخلي الـ React Query تمسكها بدل ما تعملها global state manually.

- متخليش كل حاجة global، ده بيخلي الـ re-rendering يزيد والـ debugging بيكون أصعب.

- الـ Server State مش دايمًا محتاج يتحول لـ Global State، الـ React Query مثلًا بيخزنها وبيشاركها بين الـ components تلقائي، من غير ما تدخلها في Redux أو غيره.

- الـ Context ممتاز للحاجات اللي مش بتتغير كتير، زي الـ theme أو اللغة أو المستخدم اللي دخل مرة واحدة وخلاص.

———

اختيارك للـ state له تأثير مباشر على الـ performance، وكمان الـ maintainability، والـ DX بتاعك.

———

وفقكم الله لكل خير 🌿

BY DevGuide 🇵🇸


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/the_developer_guide/5316

View MORE
Open in Telegram


DevGuide 🇵🇸 Telegram | DID YOU KNOW?

Date: |

Export WhatsApp stickers to Telegram on Android

From the Files app, scroll down to Internal storage, and tap on WhatsApp. Once you’re there, go to Media and then WhatsApp Stickers. Don’t be surprised if you find a large number of files in that folder—it holds your personal collection of stickers and every one you’ve ever received. Even the bad ones.Tap the three dots in the top right corner of your screen to Select all. If you want to trim the fat and grab only the best of the best, this is the perfect time to do so: choose the ones you want to export by long-pressing one file to activate selection mode, and then tapping on the rest. Once you’re done, hit the Share button (that “less than”-like symbol at the top of your screen). If you have a big collection—more than 500 stickers, for example—it’s possible that nothing will happen when you tap the Share button. Be patient—your phone’s just struggling with a heavy load.On the menu that pops from the bottom of the screen, choose Telegram, and then select the chat named Saved messages. This is a chat only you can see, and it will serve as your sticker bank. Unlike WhatsApp, Telegram doesn’t store your favorite stickers in a quick-access reservoir right beside the typing field, but you’ll be able to snatch them out of your Saved messages chat and forward them to any of your Telegram contacts. This also means you won’t have a quick way to save incoming stickers like you did on WhatsApp, so you’ll have to forward them from one chat to the other.

At a time when the Indian stock market is peaking and has rallied immensely compared to global markets, there are companies that have not performed in the last 10 years. These are definitely a minor portion of the market considering there are hundreds of stocks that have turned multibagger since 2020. What went wrong with these stocks? Reasons vary from corporate governance, sectoral weakness, company specific and so on. But the more important question is, are these stocks worth buying?

DevGuide 🇵🇸 from tw


Telegram DevGuide 🇵🇸
FROM USA